package com.pg.apple_iphone_stock.main;

import com.alibaba.fastjson.JSONObject;
import com.pg.apple_iphone_stock.util.HttpRequestUtil;

import java.io.IOException;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;


/**
 * 查询 apple直营店库存
 * 轮询查
 *
 * @author Mr-Liu
 */
public class CheckInventory {
    //格式化
    private static DateTimeFormatter fmTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

    public static void main(String[] args) throws IOException {
        //新建定时任务
        //run方法中是定时执行的操作
        Runnable runnable = () -> inquire();
        ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor();
        /*
         * 参数一:command：执行线程
         * 参数二:initialDelay：初始化延时
         * 参数三:period：两次开始执行最小间隔时间   3秒执行一次查询
         * 参数四:unit：计时单位
         */
        service.scheduleAtFixedRate(runnable, 0, 3, TimeUnit.SECONDS);
    }

    /**
     * 执行查询
     *
     * @throws IOException
     */
    public static void inquire() {
        //执行请求
        String ret = null;
        try {
            ret = HttpRequestUtil.sendGet("https://reserve-prime.apple.com/CN/zh_CN/reserve/A/availability.json", null);
        } catch (IOException e) {
            e.printStackTrace();
        }
        //转换json
        JSONObject json = JSONObject.parseObject(ret);
        //R577（广州天环广场直营店） 获取指定门店库存：门店对应编号接口地址：https://reserve-prime.apple.com/CN/zh_CN/reserve/A/stores.json
        //MGLF3CH/A（白色Pro 256G） iPhone12 型号对照表地址：https://wenku.baidu.com/view/4140fff3b42acfc789eb172ded630b1c58ee9b2a.html

        //查询天环库存
        Boolean parcCentral = json.getJSONObject("stores").getJSONObject("R577").getJSONObject("MGLF3CH/A").getJSONObject("availability").getBoolean("unlocked");
        //查询珠江新城库存
        Boolean newTown = json.getJSONObject("stores").getJSONObject("R639").getJSONObject("MGLF3CH/A").getJSONObject("availability").getBoolean("unlocked");
        //有库存 发送微信消息通知
        if (parcCentral || newTown) {
            sendMessage();
        } else {
            //当前时间
            LocalDateTime now = LocalDateTime.now();
            System.out.println(now.format(fmTime) + "：广州暂无库存");
        }
    }

    /**
     * 发送微信 信息提醒
     */
    public static void sendMessage() {
        try {
            HttpRequestUtil.sendPost("https://sc.ftqq.com/1CU115741T18e02ac05ba414c669bcb5de741a57d55f719e1b75e55.send", "text=广州有库存了，快冲~");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
